package cn.bonoon.kernel;

import cn.bonoon.kernel.support.IOperator;
import cn.bonoon.kernel.util.StringHelper;

/**
 * 用户访问级别的限制。如：普通用户、管理员、超级管理员等的等级。
 * 如果是数据的访问范围的限制的，可以参考{@link VisibleScope}
 * 
 * 这个类主要是处理{@link FlagType}
 * 
 * @author jackson
 *
 */
public abstract class VisibleLevel {
	
	private static final String ALL_LIMIT_VALUE = "all";
	private static VisibleLevel ALL_LIMITER = new VisibleLevel(){
		public boolean accept(IOperator user){
			return true;
		}
	};
	
	private static class ValueVisitLevelLimiter extends VisibleLevel{
		
		private final String value;
		
		private ValueVisitLevelLimiter(String value){
			this.value = value;
		}
	
	}
	
	public static VisibleLevel valueOf(String value){
		if(StringHelper.isEmpty(value) || ALL_LIMIT_VALUE.equals(value)) return ALL_LIMITER;
		return new ValueVisitLevelLimiter(value);
	}
	
	public boolean accept(IOperator user){
		return true;
	}
}
